// 导入工具类
const common = require('../../utils/util.js')
// 这里的Component:用于注册组件
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 这里定义了innerText属性，属性值可以在组件使用时指定
    reviseName: {
      type: String,
      value: '性别',
    },
    button: {
      type: String,
      value: '确认',
    },
    title: {
      type: String,
      value: '修改界面'
    },
    isHidden:{
      type:Boolean,
      value:false
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    isHidden:true,    // false:代表显示  // true:代表隐藏
    username: '',     // 用户名
    reverseName: '',  // 要修改的名称
    inputValue: '',  //表单的值        
    // 请求地址前缀
    requestPrefix: 'http://localhost:8081/keepfit/',
    findUserbasicMessage_URL:'http://localhost:8081/keepfit/findBasicMessage',
    //修改用户基本信息的后缀地址
    requestSuffix: 'updateUserMessage',
    // 请求修改密码的路径
    requestPassPath:'updatePass'    
  },
  created() {
    console.log("username=" + wx.getStorageSync('userMessage').user)
    this.setData({
      username: wx.getStorageSync('userMessage').user
    })
  },
  lifetimes: {

  },
  // methods里面可以放：自定义函数、事件响应函数
  methods: {
    onLoad: function () {
      // 同步获取 用户名
      this.setData({
        // username:wx.getStorage('userMessage').user
        username: wx.getStorageSync('userMessage').user
      })
      console.log("onload---" + this.username)
    },
    handleSubmit(e) {
      var that = this
      // 将修改界面进行隐藏
      that.setData({
        isHidden:true
      })

      var params = {}  // 用于提交给工具函数的参数
      // 要修改的用户名  后面的 username:顶部已获取，直接引用
      params.username = that.data.username
      console.log(e)
      // 将获input表单的值赋值给data中
      that.setData({
        inputValue: e.detail.value.name
      })
      // 获取请求类型
      var flag = that.handleRequestType()
      if (flag == 0) {
        // 昵称修改后的值
        params.nicke_name = that.data.inputValue
      } else if (flag == 1) {
        params.sex = that.data.inputValue
      } else if (flag == 2) {
        params.area = that.data.inputValue
      } else if (flag == 3) {
        params.password = that.data.inputValue
        // 修改为密码的请求路径
      }
      that.handleRequest(params)
    },
    // 处理请求的类型  即是对 昵称、性别、地区 等进行处理  
    handleRequestType() {
      var that = this
      var flag = 0       // 0:代表昵称 1：性别  2：地域  3:密码
      var name = that.data.reverseName
      if (name == '昵称') {
        flag = 0
      } else if (name == '性别') {
        flag = 1
      } else if (name == '地域') {
        flag = 2
      } else if (name == '密码') {
        flag = 3
      } else {
        flag = -1  //即不满足要求的请求类型
        return   //直接结束函数，不返回flag
      }
      return flag
    },
    // 处理请求的方法  name:要更新的选项
    handleRequest(params) {
      var that = this
      var URL=""
      // 对用户的基本信息进行处理（除密码外）
      URL = that.data.requestPrefix + that.data.requestSuffix;
      // 如果请求的是密码
      if('password' in params){
        URL=that.data.requestPrefix+that.data.requestPassPath
      }
      // 修改用户基本信息
      common.reviseMessage(params, URL)
        .then(res => {
          console.log(res)
          if(res.status==='success'){
            // 修改成功后将本地缓存清空，这样才能获取到最新的用户基本信息
          
            console.log('修改成功!!')
            wx.showToast({
              title: '修改成功！',
              icon: 'success',
            })
            //请求服务重新获取用户的基本信息
            common.findUserbasicMessage(params,that.data.findUserbasicMessage_URL)
            .then(res=>{   
               // 将请求结果（用户的基本信息)存入本地中
               wx.setStorageSync('basicMessage', res)
            })

          }else{
            console.log('修改失败!!')
            wx.showToast({
              title: '修改失败！',
              icon: 'error',
            })
          }         
        })
        .catch(error => {
          wx.showToast({
            title: '请求出错！',
            icon: 'error',
          })
          console.log(error)
        })
    },
    // 编码函数
    encodeFfunction(str){
      var encodStr=encodeURI(str)
      return encodStr
    }

  },
  // 对属性和数据的监听
  // 访问属性：this.properties.reviseName 
  observers: {
    'reviseName': function (e) {
      // 当引用该组件的页面的属性发生变化时，这里会得到变化后的reviseName属性的值
      console.log("reviseName=" + this.properties.reviseName)
      this.data.reverseName = this.properties.reviseName
      console.log("要修改的名称是--" + this.data.reverseName)
    }
  }
}) 
